home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Technology Seed / ADC Seed CD - July 1999.toast / USB / Mac OS USB DDK v1.2 / Examples / USBSampleStorageDriver / SampleStorageDriverAPI.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-04-15  |  3.0 KB  |  111 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SampleStorageDriverAPI.h
  3.  
  4.     Contains:    Sample Storage Class definitions used by the Storage Class UT Driver
  5.  
  6.     Version:    1.1
  7.  
  8.     Copyright:    © 1998-1999 by Apple Computer, Inc., all rights reserved.
  9.  
  10. */
  11.  
  12. #ifndef __SAMPLESTORAGEDRIVERAPI__
  13. #define __SAMPLESTORAGEDRIVERAPI__
  14.  
  15. #include <MacTypes.h>
  16.  
  17. #define kDispatchTableVersion        0
  18.  
  19. // Return codes from the class driver
  20. enum
  21. {
  22.     kCommandBusyError =  -10000,
  23.     kClassNotConfiguredErr,
  24.     kRequestPending = 1
  25. };
  26.  
  27.  
  28. enum ControlSelectors
  29. {
  30.     kControlDisableRemoval =    0,
  31.     kControlEnableRemoval
  32. };
  33.  
  34. enum StatusSelectors
  35. {
  36.     kStatusConfiguration =        0,
  37.     kStatusDeviceStatus,
  38.     kStatusRemovalStatus
  39. };
  40.  
  41. enum driverConfigurationStatus
  42. {
  43.     kNotConfigured =            0,
  44.     kConfigureInProgress,
  45.     kConfigureComplete,
  46.     kConfigureFailed
  47. };
  48.  
  49.  
  50. #define kCDBSize                    12        // Per the USB Mass Storage Class spec.
  51.  
  52. typedef CALLBACK_API_C( void , StorageClassCompletionProcPtr )(void* storageClassPBPtr );
  53.  
  54.  
  55. struct StorageStatusPB {
  56.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  57.     UInt8                            deviceStatus[2];            // <- Two bytes of status
  58.     OSStatus                        status;                // <- Result of operation
  59. };
  60. typedef struct StorageStatusPB    StorageStatusPB;
  61. typedef StorageStatusPB *        StorageStatusPBPtr;
  62.  
  63.  
  64. struct StorageControlPB {
  65.     UInt32                            selector;            // -> Operation to perform
  66.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  67.     OSStatus                        status;                // <- Result of operation
  68. };
  69. typedef struct StorageControlPB    StorageControlPB;
  70. typedef StorageControlPB *        StorageControlPBPtr;
  71.  
  72.  
  73. struct StorageExecuteCommandPB {
  74.     UInt8                            cdb[kCDBSize];        // -> CDB to send to device
  75.     UInt32                            flags;                // -> Data transfer flags (See below)
  76.     Ptr                                userBuffer;            // -> Pointer to user buffer
  77.     UInt32                            expectedCount;        // -> Expected number of bytes to transfer
  78.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  79.     UInt32                            actualCount;        // <- Actual number of bytes transferred
  80.     OSStatus                        status;                // <- Result of operation
  81. };
  82. typedef struct StorageExecuteCommandPB    StorageExecuteCommandPB;
  83. typedef StorageExecuteCommandPB *        StorageExecuteCommandPBPtr;
  84.  
  85. // Data transfer flags for StorageExecuteCommandPB
  86. enum {
  87.     kStorageDataIn    =    0x0001,
  88.     kStorageDataOut =    0x0002,
  89.     kStorageNoData =    0x0004
  90. };
  91.  
  92. typedef CALLBACK_API_C( OSStatus , StorageInitializeProcPtr )(void);
  93.  
  94. typedef CALLBACK_API_C( OSStatus , StorageControlProcPtr )(UInt32 theControlSelector, void *theControlData);
  95.  
  96. typedef CALLBACK_API_C( OSStatus , StorageStatusProcPtr )(UInt32 theInfoSelector, void *theInfo);
  97.  
  98. typedef CALLBACK_API_C( OSStatus , StorageExecuteCommandProcPtr )(void* storageExecuteCommandPBPtr );
  99.  
  100.  
  101. struct StorageClassDispatchTable {
  102.     UInt32                            dispatchTableVersion;
  103.     StorageInitializeProcPtr         pStorageInitialize;
  104.     StorageControlProcPtr             pStorageControl;
  105.     StorageStatusProcPtr             pStorageStatus;
  106.     StorageExecuteCommandProcPtr    pStorageExecuteCmd;
  107. };
  108. typedef struct StorageClassDispatchTable    StorageClassDispatchTable;
  109. typedef StorageClassDispatchTable *            StorageClassDispatchTablePtr;
  110.  
  111. #endif /* __SAMPLESTORAGEDRIVERAPI__ */